/**
 * 
 */
package com.oauth.facebook.server.service;

import java.util.List;

import com.oauth.common.server.beans.OAuthAccessToken;
import com.oauth.common.server.beans.OAuthRequestToken;
import com.oauth.facebook.client.beans.FacebookUser;
import com.oauth.facebook.server.beans.FacebookRequestToken;
import com.oauth.service.application.global.beans.Birthday;

/**
 * Help to abstract all facebook api specific classes.
 * 
 * @author asanthan
 * 
 */
public interface FacebookService {

	OAuthAccessToken getAccessTokenFromDB(Long pMemberId) throws Exception;

	OAuthAccessToken getAccessTokenFromRequestToken(OAuthRequestToken pRequestToken,
			String pVerifier) throws Exception;

	FacebookRequestToken getRequestToken() throws Exception;

	void persistAccessToken(OAuthAccessToken pAccessToken, Long pMemberId) throws Exception;

	List<FacebookUser> getFriends(Long pMemberId) throws Exception;

	FacebookUser getFacebookUser(Long pMemberId) throws Exception;

	List<FacebookUser> getUpdates(Long pMemberId) throws Exception;

	List<FacebookUser> getMessages(Long pMemberId) throws Exception;

	void updateStatus(String pText, Long pMemberId) throws Exception;

	List<Birthday> getUpcomingBirthdays(Long pMemberId, int pBirthdayInterval) throws Exception;
}
